/*
  使用nodejs内置的模块创建服务器端程序：
    1. 引入http模块，已经被nodejs内置，只要你的电脑安装了nodejs并配置环境变量就能够使用此模块
    2. nodejs中使用CommonJS提供的引入模块方法，let http = require('http')
    3. 使用http对象创建服务对象
    4. 监听客户端的请求
    5. 使用node命令启动服务
    6. 通过接口测试工具(postman)或浏览器访问服务器端程序(接口 api)
*/

// 1. 引入http
const http = require('http')

// 2. 创建服务器对象
const server = http.createServer(function (req, res) {
  console.log('有人发送请求了，ip:' + getClientIp(req))
  // req是客户端发送的请求对象
  // res是服务端返回给客户响应对象
  // 返回信息
  let object = { host: '127.0.0.1', post: 3000, client: false, server: true, status: 200 }
  res.end(JSON.stringify(object))
})

// 3. 监听客户端的请求
server.listen(3000, '192.168.106.5', () => {
  console.log('Server is running on http://127.0.0.1:3000!')
})

// 获得客户端的ip
function getClientIp(req) {
  return (
    req.headers['x-forwarded-for'] ||
    req.connection.remoteAddress ||
    req.socket.remoteAddress ||
    req.connection.socket.remoteAddress
  )
}
